1. Field of the Invention
This invention relates to the field of client/server architecture, and more particularly relates to a method and apparatus for providing desktop application functionality in a client/server architecture.
2. Description of the Related Art
With the advent of the Internet and, more importantly, the World-Wide Web (WWW, or web), users of computer systems have been afforded a wide array of functionalities, accessible from almost any location. This “portability” is provided by any number of mechanisms, including Internet access at home and at work; public terminals; wireless technology, such as cellular, IEEE 802.11 standards (often referred to as “Wi-Fi”), satellite communications and the like; and other such mechanisms. The basis for this portability is the client/server architecture, in which the user is able to access information on the server from any client that is capable of accessing the server. Thus, the user is able to access, for example, a given set of programs on a server from a client in communication therewith.
The ability to access such functionality is simplified when using the web or other client/server environment, because the only required software on the client side is a client such as a web browser. For example, using a browser, the user is able to view content such as web pages generated by a given application. This allows the application to present the requisite information as would be the case if the application were operating on the user's computer (also termed “on the desktop”), without actually having to install that application on the their computer. Such a “generic client” approach, obviously, lends itself to the portability aspect that makes such a paradigm so attractive.
In fact, the number of people using computer systems in their daily lives has increased dramatically with the growth of the Internet and the web, who have grown accustomed to accessing virtually unlimited information stored by computer systems all over the world. As the sophistication of computer users increases, user expectations of the types of user interfaces and functionality that should be provided by software applications also increase.
Many software development environments for desktop and network applications enable a developer to assemble an application using multiple components that provide different types of functionality. Components provide the capability for an application to provide rich, fully-featured user interfaces, including functionality for windows, buttons, scrollbars, and so on. A component can be re-used by many applications within a computer or among computers in a network. The application provides an environment, also referred to as a context, in which the component runs.
A component can include display code and functional code, where the display code can display a visual portion of a user interface and the functional code can respond to a user action taken with reference to the visual portion. For example, a component's display code can display a button in a user interface, and the component's functional code can specify a function to perform when a user performs an action with reference to the button. For example, the user can point a cursor to the button using a mouse or other pointing device and click on the button, which causes the functional code to be performed. A component is not, however, required to include display code or display a visual portion of the user interface. When a component does not display a visual portion of the user interface, the component is sometimes referred to as being “invisible.”
Unfortunately, the functionality to implement components is not always easily achieved using the technology employed in client/server environments such as the web. For example, browsers provide information (content) in the form of a web page, which is produced by interpreting a text document encoded using a language specially developed for such applications. In the web environment, Hypertext Markup Language (HTML) is such a language. Thus, for example, a single HTML document cannot easily provide all of the information needed to provide a sophisticated user interface in the form of a web page. Because of the limitations of HTML, web application developers face significant challenges in providing user interfaces that can access the wealth of information available via the Internet using web technology and yet provide the sophisticated features meeting users' expectations.
Moreover, generating and serving content, especially that which needs to be populated with data from other sources, is often quite slow, particularly when compared to desktop applications. As a result, users of such systems are often found to prefer desktop applications over web-based applications. Certainly, the greater the delay in operations experienced with a web-based application, the more preferable a user would find using a corresponding desktop application. The greater the delay, the stronger the user's preference for the desktop application, generally.
This is especially true of applications (and functions thereof) in which the data would be immediately available, in the case of a desktop application. For example, many desktop applications automatically fill certain data-entry fields on various of their screens. This is a convenient and time saving feature that most users find desirable. However, when providing such functionality in a web-based application, some amount of delay in filling such fields is inevitable, as a result of the delays inherent in transporting information over the network. If the delays are substantial, the user's experience in using the given application is negatively impacted.
One solution is keeping the data available using a “cookie,” which is a message sent to a web browser by a web server, which the browser stores in, for example, a text file. Typically, information from such a cookie is then sent back to the server in the form of a message, each time the browser requests a page from the server, to identify the user and, potentially, to give the server information regarding the user. As will be appreciated, cookies can also be used to store information on a client computer. However, such an approach must contend with a number of shortcomings. Moreover, leaving such information on a public computer may not be acceptable, and so require the user to delete such cookies after each use of the application.
Another approach is to simply download the entire store of requisite data at the time the content, such as a web page, is downloaded (served) to the client. This would, typically, include the entire store of data that might be used by/presented to the user. However, this must be done each time any such information is needed, consuming valuable network resources and, as noted earlier with regard to such delays, negatively impacting the user's experience. As will also be appreciated, sending the full complement of data can also slow, or even crash, the browser software running on the client, once again resulting in a poor user experience. Thus, the poor performance typically associated with web-based solutions stands as an obstacle to adoption.
What is therefore needed is a technique that allows a web-based application to provide the functionality of a desktop application with the advantages of a client/server architecture. Such functionality should be provided to the user in a fast and efficient manner, while offering the advantages of web-based applications, including portability, uniformity and the like.